From 12e182550ad0dfa1375c06c33d318df982a30e91 Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Thu, 10 May 2007 13:29:33 -0600 Subject: [PATCH] [IA64] Defined guest_mode and use it instead of user_mode. Signed-off-by: Tristan Gingold --- xen/arch/ia64/vmx/vmx_process.c | 2 +- xen/arch/ia64/xen/faults.c | 2 +- xen/arch/ia64/xen/xenmisc.c | 2 +- xen/include/asm-ia64/linux-xen/asm/ptrace.h | 4 ++++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/xen/arch/ia64/vmx/vmx_process.c b/xen/arch/ia64/vmx/vmx_process.c index 5887f0857e..15d7bce18b 100644 --- a/xen/arch/ia64/vmx/vmx_process.c +++ b/xen/arch/ia64/vmx/vmx_process.c @@ -164,7 +164,7 @@ vmx_ia64_handle_break (unsigned long ifa, struct pt_regs *regs, unsigned long is if (iim == 0) vmx_die_if_kernel("Break 0 in Hypervisor.", regs, iim); - if (!user_mode(regs)) { + if (ia64_psr(regs)->cpl == 0) { /* Allow hypercalls only when cpl = 0. */ if (iim == d->arch.breakimm) { ia64_hypercall(regs); diff --git a/xen/arch/ia64/xen/faults.c b/xen/arch/ia64/xen/faults.c index e33952eb54..966a51b5b8 100644 --- a/xen/arch/ia64/xen/faults.c +++ b/xen/arch/ia64/xen/faults.c @@ -209,7 +209,7 @@ void ia64_do_page_fault(unsigned long address, unsigned long isr, if (is_ptc_l_needed) vcpu_ptc_l(current, address, logps); - if (!user_mode(regs)) { + if (!guest_mode(regs)) { /* The fault occurs inside Xen. */ if (!ia64_done_with_exception(regs)) { // should never happen. If it does, region 0 addr may diff --git a/xen/arch/ia64/xen/xenmisc.c b/xen/arch/ia64/xen/xenmisc.c index 450ec45079..57725a53b8 100644 --- a/xen/arch/ia64/xen/xenmisc.c +++ b/xen/arch/ia64/xen/xenmisc.c @@ -79,7 +79,7 @@ void console_print(char *msg) void die_if_kernel(char *str, struct pt_regs *regs, long err) { - if (user_mode(regs)) + if (guest_mode(regs)) return; printk("%s: %s %ld\n", __func__, str, err); diff --git a/xen/include/asm-ia64/linux-xen/asm/ptrace.h b/xen/include/asm-ia64/linux-xen/asm/ptrace.h index 574c69d163..c63da0a5f9 100644 --- a/xen/include/asm-ia64/linux-xen/asm/ptrace.h +++ b/xen/include/asm-ia64/linux-xen/asm/ptrace.h @@ -265,7 +265,11 @@ struct switch_stack { /* given a pointer to a task_struct, return the user's pt_regs */ # define ia64_task_regs(t) (((struct pt_regs *) ((char *) (t) + IA64_STK_OFFSET)) - 1) # define ia64_psr(regs) ((struct ia64_psr *) &(regs)->cr_ipsr) +#ifdef XEN +# define guest_mode(regs) (ia64_psr(regs)->cpl != 0) +#else # define user_mode(regs) (((struct ia64_psr *) &(regs)->cr_ipsr)->cpl != 0) +#endif # define user_stack(task,regs) ((long) regs - (long) task == IA64_STK_OFFSET - sizeof(*regs)) # define fsys_mode(task,regs) \ ({ \ -- 2.30.2